package com.define.commons.common.utils;

import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;

/**
 * cxf实现调用webservice接口
 *
 * @Author: liguocheng
 * @Date: 2018/11/27 17:01
 */
public class CxfClientUtils {

    /**
     * 代理类工厂的方式,需要拿到对方的接口
     *
     * @param url   列如："http://localhost:8089/services/CommonService?wsdl"
     * @param clazz 对方接口的class
     * @param <T>   对象接口代理对象
     * @return
     * @throws Exception
     */
    public static <T> T getTImpl(String url, Class clazz) throws Exception {
        if (!url.endsWith("wsdl")) {
            url += "?wsdl";
        }
        // 代理工厂
        JaxWsProxyFactoryBean jaxWsProxyFactoryBean = new JaxWsProxyFactoryBean();
        // 设置代理地址
        jaxWsProxyFactoryBean.setAddress(url);
        // 设置接口类型
        jaxWsProxyFactoryBean.setServiceClass(clazz);
        // 创建一个代理接口实现
        T port = (T) jaxWsProxyFactoryBean.create();
        return port;
    }

}
